﻿//   1、移动零  

//#include<iostream>
//using namespace std;
//#include<vector>
//#include<math.h>
//class Solution
//{
//public:
//    void moveZeroes(vector<int> nums)
//    {
//        for (int cur = 0, dest = -1; cur < nums.size(); cur++)
//        {
//            if (nums[cur]) // 处理⾮零元素
//            {
//                swap(nums[++dest], nums[cur]);
//            }
//        }
//    }
//};


//   2、复写0
//class Solution {
//public:
//    void duplicateZeros(vector<int>& arr)
//    {
//        int cur = 0, dest = 0;
//        //先找出最后一位数
//        while (cur < arr.size())
//        {
//            if (arr[cur])
//            {
//                dest++;
//            }
//            else
//            {
//                dest += 2;
//            }
//            if (dest >= arr.size())
//            {
//                break;
//            }
//            cur++;
//        }
//        //边界情况
//        if (dest == arr.size() + 1)
//        {
//            arr[arr.size() - 1] = 0;
//            dest -= 2;
//            cur--;
//        }
//        //从后往前开始复习
//
//        while (cur >= 0)
//        {
//            if (arr[cur])
//            {
//                arr[--dest] = arr[cur];
//            }
//            else {
//                arr[--dest] = 0;
//                arr[--dest] = 0;
//            }
//            cur--;
//        }
//    }
//};

//   3、快乐数
//class Solution {
//public:
//    int mulsum(int n)
//    {
//        int sum = 0;
//        while (n)
//        {
//            sum += pow(n % 10, 2);
//            n /= 10;
//        }
//        return sum;
//    }
//    bool isHappy(int n)
//    {
//        int fast = mulsum(n);
//        int slow = n;
//
//        while (fast != slow)
//        {
//            slow = mulsum(slow);
//            fast = mulsum(mulsum(fast));
//        }
//        return slow == 1;
//    }
//};


//   4、成水最多的容器
//class Solution {
//public:
//    int maxArea(vector<int>& height)
//    {
//        int n = height.size();
//        int left = 0, right = n - 1;
//        int max = 0;
//        while (right > left)
//        {
//            int v = ((right - left) * min(height[left], height[right]));
//            max = fmax(max, v);
//            if (height[left] > height[right])
//            {
//                right--;
//            }
//            else
//            {
//                left++;
//            }
//
//        }
//        return max;
//    }
//};
